package bo;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import view.InscripcionView;
import configuracion.VariablesGlobales;
import dao.AnuncioDAO;
import dao.ClienteDAO;
import dao.InscripcionDAO;
import dao.SorteoDAO;
import dao.interfaces.IAnuncioDAO;
import dao.interfaces.IClienteDAO;
import dao.interfaces.IInscripcionDAO;
import dao.interfaces.ISorteoDAO;
import dto.AnuncioDTO;
import dto.ClienteDTO;
import dto.InscripcionDTO;
import dto.SorteoDTO;
import dto.UsuarioDTO;

public class InscripcionBO{       
    
	public InscripcionBO() {
        super();
    }
	public void procesarAccion(HttpServletRequest request, HttpServletResponse response) throws SQLException, Exception, IOException{
		String accion = request.getParameter("accion");
		// Acciones relacionadas con la pagina verAnuncio.jsp
		if(accion!=null && accion.compareTo("")!=0){
			// Caso de que quiera volver a ver la lista de anuncios
			if(accion.compareTo("volver")==0){
				IAnuncioDAO anuncioDao = new AnuncioDAO();
				request.getSession().setAttribute("listaAnuncios", anuncioDao.selectAll());
				request.getRequestDispatcher(VariablesGlobales.PATH_JSP+"/inscripcionSorteo/menuInscripcion.jsp").forward(request, response);
			// Caso de querer inscribirsi en un sorteo
			}else if(accion.compareTo("inscripcion")==0){
				int idSorteo= 0;
				String idSort = request.getParameter("pidSorteo");
				if(idSort!=null){
					idSorteo = Integer.parseInt(idSort);
				}
			 	UsuarioDTO usuarioDto= (UsuarioDTO) request.getSession().getAttribute("usuario");
			 	IClienteDAO clienteDao = new ClienteDAO();
			 	ClienteDTO clienteDto = clienteDao.obtenerClienteById(usuarioDto.getPid());
			 	if(clienteDto.getPid()!=0){
			 		ISorteoDAO sorteoDao = new SorteoDAO();
			 		SorteoDTO sorteoDto = sorteoDao.obtenerSorteoById(idSorteo);
			 		IInscripcionDAO inscripcionDao = new InscripcionDAO();
			 		String errorProv = "";
			 		if(sorteoDto.getVpo().getMunProv().getProvincia().getNombre().compareTo(clienteDto.getMunicipio().getProvincia().getNombre())==0){
			 			inscripcionDao.insertarInscripcion(clienteDto.getPid(), idSorteo);
			 		}else{
			 			errorProv = "No puede inscribirse a este sorteo.<br>La vivienda no se encuentra en su misma provincia.";
			 		}
			 		InscripcionDTO inscripcionDto = inscripcionDao.buscarInscripcion(clienteDto.getPid(), idSorteo);
			 		String anunPid =request.getParameter("anun"); 
					int anun = 0;
					if(anunPid!=null && anunPid.compareTo("")!=0){
						anun = Integer.parseInt(anunPid);
					}
					IAnuncioDAO anuncioDao = new AnuncioDAO();
					InscripcionView inscripcionView = new InscripcionView();
					inscripcionView.setAnuncio(anuncioDao.obtenerAnuncioById(anun));
					inscripcionView.setInscripcion(inscripcionDto);
					inscripcionView.setSorteo(sorteoDto);
					inscripcionView.setErrorProvincia(errorProv);
					request.setAttribute("inscripcionView",inscripcionView);
					request.getRequestDispatcher(VariablesGlobales.PATH_JSP+"/inscripcionSorteo/verAnuncio.jsp").forward(request, response);		 			
			 	}
			}else if(accion.compareTo("finalizar")==0){
				request.getRequestDispatcher("").forward(request, response);
			}
		// Acciones relacionadas con la pagina menuInscripcion.jsp
		}else{
			String anuncioId =request.getParameter("verAnuncio"); 
			int pidAnuncio = 0;
			if(anuncioId!=null &&anuncioId.compareTo("")!=0){
				pidAnuncio = Integer.parseInt(anuncioId);
			}
			if(pidAnuncio!=0){
				InscripcionView inscripcionView = new InscripcionView();
				inscripcionView.setErrorProvincia("");
				IAnuncioDAO anuncioDao = new AnuncioDAO();
				AnuncioDTO anuncioDto = anuncioDao.obtenerAnuncioById(pidAnuncio);
				inscripcionView.setAnuncio(anuncioDto);
				ISorteoDAO sorteoDao = new SorteoDAO();
				SorteoDTO sorteoDto = sorteoDao.obtenerSorteoByVpo(anuncioDto.getVpo().getPid());
				inscripcionView.setSorteo(sorteoDto);
				IInscripcionDAO inscripcionDao =  new InscripcionDAO();
				InscripcionDTO inscripcionDto = inscripcionDao.buscarInscripcion(((UsuarioDTO)request.getSession().getAttribute("usuario")).getPid(), sorteoDto.getPid());
				inscripcionView.setInscripcion(inscripcionDto);
				request.setAttribute("inscripcionView", inscripcionView);
				request.getRequestDispatcher(VariablesGlobales.PATH_JSP+"/inscripcionSorteo/verAnuncio.jsp").forward(request, response);
				request.getSession().removeAttribute("listaAnuncios");
			}			
		}
	}
}
